﻿using System.Windows;
using System.Windows.Controls;
using kursovaya.Data.Context;
using kursovaya.Data.Entity;

namespace kursovaya.Windows
{
    public partial class AddInvWindow : Window
    {
        public AddInvWindow()
        {
            InitializeComponent();
        }

        private void AddRecordButton_OnClick(object sender, RoutedEventArgs e)
        {
            if (TypeComboBox.SelectedItem == null)
            {
                MessageBox.Show("Выберите тип предмета!",
                    "Ошибка",
                    MessageBoxButton.OK,
                    MessageBoxImage.Error);
                return;
            }

            var selectedType = TypeComboBox.SelectedItem.GetType();
            if (selectedType != typeof(Label))
            {
                MessageBox.Show("Выберите корректный тип предмета!",
                    "Ошибка",
                    MessageBoxButton.OK,
                    MessageBoxImage.Error);
                return;
            }

            if (TypeComboBox.SelectedItem is Label selectedLabel)
            {
                string name = NameTextBox.Text.Trim();
                string type = selectedLabel.Content.ToString();
                string amountText = AmountTextBox.Text.Trim();
                string description = DescriptionTextBox.Text.Trim();

                if (string.IsNullOrEmpty(name) || string.IsNullOrEmpty(amountText) || string.IsNullOrEmpty(description))
                {
                    MessageBox.Show("Поля не должны быть пустыми!",
                        "Ошибка",
                        MessageBoxButton.OK,
                        MessageBoxImage.Error);
                    return;
                }

                if (name.Length > 50)
                {
                    MessageBox.Show("Название не должно превышать 50 символов!",
                        "Ошибка",
                        MessageBoxButton.OK,
                        MessageBoxImage.Error);
                    return;
                }

                if (!int.TryParse(amountText, out int amount) || amount <= 0 || amount > 150)
                {
                    MessageBox.Show("Введите корректное число от 1 до 150 в поле 'Количество'!",
                        "Ошибка",
                        MessageBoxButton.OK,
                        MessageBoxImage.Error);
                    return;
                }

                if (description.Length > 200)
                {
                    MessageBox.Show("Описание не должно превышать 200 символов!",
                        "Ошибка",
                        MessageBoxButton.OK,
                        MessageBoxImage.Error);
                    return;
                }

                Inventorye inventorye = new Inventorye(name, type, amount.ToString(), description);

                using (var db = new DbContext())
                {
                    db.Inventoryes.Add(inventorye);
                    db.SaveChanges();
                }

                MessageBox.Show("Предмет хозяйственного инвентаря добавлен",
                    "Успех",
                    MessageBoxButton.OK,
                    MessageBoxImage.Information);

                NameTextBox.Text = "";
                AmountTextBox.Text = "";
                DescriptionTextBox.Text = "";
                TypeComboBox.SelectedItem = null;
            }
        }
    }
}